package edu.nf.ch11.jdkproxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

/**
 * @author wangl
 * @date 2025/4/18
 */
public class Main {

    public static void main(String[] args) {
        //初始化回调处理器
        InvocationHandler handler = new ServiceInvocationHandler(new UserServiceImpl());
        //动态创建代理对象
        //参数一：类加载器（用于加载动态创建的代理字节码）
        //参数二：目标对象实现的所有接口（
        //       因为代理对象是基于目标对象的接口创建出来的）
        //参数三：回调处理器（负责调用目标对象的行为并增强逻辑）
        //返回一个实现了UserService接口的代理对象
        UserService service = (UserService) Proxy.newProxyInstance(
                Main.class.getClassLoader(),
                UserServiceImpl.class.getInterfaces(),
                handler);
        service.addUser();
        service.deleteUser();
    }
}